title: "Vim 7.3正式版:新功能介绍(附视频、中文帮助文件)"
date: 2010-08-15
categories:
- "text-editor"
tags:
- "gvim"
- "wink"
Vim 7.3正式版:新功能介绍(附视频、中文帮助文件)
gVim 7.3 Windows直接下载:http://ftp.vim.org/pub/vim/pc/gvim73.exe 更多下载:http://www.vim.org/download.php
- 安装程序会自动卸载旧版Vim:如果你不放心,也可暂不卸载。 - 安装程序会询问是否保留vimfiles:当然要保留!
Vim 7.3 的中文帮助文件已经发布,下载、使用如下: - 下载:链接。 - 解压到合适路径,如 d:\soft\Vim\vimfiles\doc\ - 更新帮助文件的tags,如::helptags d:\soft\Vim\vimfiles\doc\ - 测试新特性的中文帮助,如 :h 'rnu'@cn
The biggest additions since 7.2: - Persistent undo, undo for reload - Blowfish encryption, also encrypt the swap file - Conceal text (note: since 7.3a 'conc' was renamed to 'cole') - Lua interface - Python 3 interface
请在安装新版Vim后,运行 :ver 查看。
Vim支持语法高亮,有的语法高亮需要一些额外的标注符,它们并不是文本内容的一部分。比如用VOoM实现带折叠的双栏树状文本管理时,需要用 {{{1、{{{2 这样的符号表示标题级别。这些额外的标注符,最好比较低调。比如,上文就采用了零宽断言(:h zero-width)或contain来区分标注符,然后用link 到 ignore(文字前景色=背景色)的方式来“不显示”。但这里的不显示,只是一种前背景同色的障眼法。相比之下,Vim 7.3的conceal text具备了更强大的功能;某种程度上,相当于inline folding。
Conceal text,直译为“隐藏文字”。不过,译为“可隐藏文字”更符合原意。因为,它的最终效果——是否隐藏、如何隐藏——取决于如下属性/参数:
① syn命令的conceal参数 语句:sy match test_conceal "(善用佳软.*)" conceal 表示:括号内以善用佳软开头的字符串,命名为 test_conceal 组,具备了conceal属性。 更多参见::h conceal
② conceallevel(简称cole)选项值 具备conceal属性的字符串,并不一定是隐藏的。其具体表现取决于conceallevel的值。 ☆ 0:默认值,显示。 因此,只设定conceal,并没有任何隐藏效果。 ☆ 1:短线高亮。 匹配的字符串缩略显示为一个“-”符号(取决于listchars设定),并采用conceal组的高亮方案。 ☆ 2:不显示,除非定义了cchar变量。 举个例子就明白了,如下语句 :syntax match Entity "&"?conceal cchar=& 可以把实体字符显示为原字符,更易于阅读。 ☆ 3:完全不显示。 更多参见::h cole
③ concealcursor(简称cocu)参数 该值默认为空,效果就是无论如何隐藏,当光标位于该行时,conceal文字仍会显示。 如果想取消此效果,可设定相应值:n v i c。vim帮助文件中的设定值为nc。 更多参见::h cocu
上面的文字已经隐含了两个例子: - 任何额外标记符的隐藏,如Voom中的 {{{1。还可扩展到vim的帮助文件、vimwiki…… - html源代码中,实体字符的还原显示。
我能想到的例子: - 用来背单词。比如把英文单词后面的所有释义设为隐藏;光标移在该行时,再显示释义。 - txt格式的读书笔记:参见下面的视频。 - 隐藏 xml/html 标签,只显示文字。示例:
1、如下内容保存为 d:\1.vim sy match tag_conceal "<.\{-}>" conceal se cole=3 2、打开html文件,再 :so d:\1.vim ,成功:所有html tag标签隐藏,只显示文字。 3、副作用是原html高亮失效,或许通过其他conclude, transparent参数能控制,但无精力/兴趣继续研究。
以前,输入 :set nu 会显示行号;现在,输入 :set rnu 会显示相对行号。 所谓相对行号,就是光标所在行为第0行,然后,向上向下分别1、2、3……行标示。 其主要用途,可方便计算移动距离。 但由于翻页/滚屏时,当前行会移动,所以,相对行号只能在一屏内使用。 操作方法: :set rnu :set nornu (nu与rnu不能同时使用)
更多说明::h rnu
例1: :set cc=10,20,30 表示把第10、20、30列,进行高亮。
例2: :set cc=-20,+10,120 表示把 textwidth-20、textwidth+10、第120列,进行高亮。
例3: :hi colorcolumn guibg=lightgreen 定义高亮列为亮绿色。
功能说明: - cc列标可以是绝对值,也可以是相对值,如例2所示。 - 会降低屏幕刷新速度。 - 对换行、中文,可能会不连续。
使用说明: - 我觉得colorcolumn有一个最实用的功能,set cc=81,可以提醒自己写得代码别超过80列 (by ankyhe)
功能介绍: Vim此前的撤销(u: undo)功能,与大多数软件一样,局限于本次打开文件后所做的编辑。而Vim 7.3新增的持久性撤销(persistence undo),即使文件多次关闭又重新打开编辑,所有的修改都可以u还原回去(当然不能超过'undolevel'的限制)。
相关参数: - :set undofile。 undofile(udf),缺省关闭,局部于缓冲区。设定后,Vim 在把缓冲区写入文件时,自动保存撤销历史到撤销文件。读入文件到缓冲区时,自动恢复撤销历史。 - 'undolevels'('ul'):可以撤销的最大改变次数。缺省为100或1000。例 set ul=500。 - 指定 undodir。'undodir'指定撤销文件存放的目录。默认是当前目录,为全局变量。 undodir可以是目录名列表,以逗号分隔,格式参见 backupdir。但是,在写入时,会使用第一个存在的目录。因为 "." 总是可用, 所以"." 之后的目录不会用来写入。在读取修改历史时,会查找所有的项目来寻找对应的撤销文件,并使用第一个找到的撤销文件。如果该文件不可读,报错,但不再继续查找。
关于撤销文件: 文件名:"." 代表文件所在的目录。此时,"file.txt" 对应的撤销文件名是 ".file.txt.un~"。如使用其他目录,撤销文件名是被编辑文件的完整路径,但路径分隔符以 "%"代替。 文件保护:撤销树文件中会包含这个文件内容的hash值,这样当一个文件有了撤销树文件后,如果它被其他程序编辑过,Vim会忽略撤销树文件,而不会因此让撤销使文件乱掉。 不会自动删除: 目前Vim只会去创建撤销树文件,而永远不会去删除它们,需要手动删除。因此,我只好把它们放到自己的tmpfs临时目录中,关机自动清除好了。
原有命令的增强:earlier和:later: 这两个命令也增加了一个单位:f——写入次数。比如说,我打开了一个配置文件,编辑N久,保存并测试后不满意,想恢复到原来的样子。怎么办呢?以前我会一直按着u键直到Vim告诉我不能撤销了,或者用备份文件(*~)来覆盖当前文件。现在可以使用命令:earlier 1f直接恢复到上次写入时了。
如何只对某些类型的文件启用undofile: -通过 BufReadPre autocmd 方式进行设定。 -使用现成的 undofile.vim 脚本。
在比较文件的时候,有个scrollbind功能,可以让被比较的文件同步滚动。但是,在之前的版本中,光标经常并不在同一行。从一个窗口跳转到另一个窗口时,我经常找不到光标的位置了。。。现在好了,有了这个特性,光标的位置也同步了。
收益: - 客观上,提供了新特性; - 主观上,需要判断这些新特性是否是自己所需要的。
成本: - 下载、升级; - 修改gvim路径,从vim72改为vim73。比如:TC中F4编辑器的设定;再比如win+r某些快捷方式的属性(“D:\soft\Vim\vim73\gvim.exe -p --remote-tab-silent f:\now\now\now.htm”)。更好的设置方式是把gvim.exe所在目录写入path变量,在引用时不加路径,直接写为gvim.exe(可以带参数)。 - python兼容性问题。vim7.2对应python2.6,而vim7.3默认需要python2.7,如果某些扩展需要python支持,则需要升级python。
我的建议: 总有一款程序让你如此信任,而随着它同步升级。对我而言,Vim就是如此。